/*
 *  vector.h
 *  T3nsors2
 *
 *  Created by Michael Barriault on 10-06-16.
 *  Copyright 2010 University of Guelph. All rights reserved.
 *
 */

#ifndef VECTOR_HEADER
#define VECTOR_HEADER
#include <string>
using std::string;

namespace t3 {
	class domain;
	class scalar;
	class vector {
	private:
		scalar** T;
		vector(void);
		~vector(void);
		int count;
	public:
		int N;
		string id;
		domain* O;
		static vector* init(domain*,int,string);
		vector* copy(vector*);
		vector* retain(void);
		void release(void);
		scalar*& c(int);
	};
	
	vector* diff(scalar*);
	scalar* lapfour(scalar*);
	vector* lapfour(vector*);
	scalar* dotProduct(vector*,vector*);
	vector* linC(double,vector*,double,vector*,string id="");
	vector* linC(double,vector*,double,vector*,double,vector*,string id="");
}

#endif
